grt/cugr: improve via demand calculation#10802
Conversation
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…op dead field Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…er default Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…king Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
|
@codex review |
|
Warning Gemini encountered an error creating the review. You can try again by commenting |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ba01782fdc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| lo_dx = r.dx(); | ||
| lo_dy = r.dy(); | ||
| } else if (box->getTechLayer() == upper_tl) { | ||
| up_dx = r.dx(); | ||
| up_dy = r.dy(); |
There was a problem hiding this comment.
Accumulate via metal extents across all boxes
When the selected tech via has more than one RECT on a routing layer, this loop overwrites lo_dx/lo_dy or up_dx/up_dy with whichever dbBox is visited last. That makes the new via-demand model charge a single rectangle rather than the via's full routing-layer footprint, so compound/default vias can have congestion and cost under-reported in a way that depends on box order. Please union/accumulate the routing-layer bbox before calling viaDemandLength.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
We would support such a non-standard via.
Do you want to use ceil? You can't really partially block a track. |
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 63bd0c554a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…ulti-cut Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…ROAD into grt_cugr_vias
…ROAD into grt_cugr_vias
Summary
CUGR previously modeled a via's global-routing demand as a min-area-derived stub length inflated by a flat
via_multiplier = 2.0— a proxy with no perpendicular (track-blocking) term. This replaces it with a model built from the via's real enclosure geometry read from the tech:demand = (enclosure_along / gcell) * ceil((enclosure_perp + 2*spacing) / pitch)i.e. "what fraction of a track's length the pad spans" times "how many whole tracks it blocks across" (a via cannot partially block a track, so the perpendicular term is rounded up). This removes the magic
via_multiplieron the geometry path and better approximates the resource a via consumes at detailed routing. The via geometry is extracted once inDesign;GridGraphconsumes the digested per-layer demand.Also included:
Type of Change
Impact
Affects CUGR only (
global_route -use_cugr); the default FastRoute path is unchanged. Via-demand magnitudes change per layer, which shifts CUGR routing, congestion, and guides: neutral on uncongested designs, improved on congested designs (lower reported overflow and wirelength, e.g. congested sky130hs/gcd variants 58->35 and 101->58 overflow with shorter wirelength), and higher reported congestion on an extreme 90%-capacity stress test (the model charging fat upper-metal vias under starvation; RRR still converges). Resistance-aware timing is preserved. A new warning (GRT-173) is emitted for techs with no via for a routing-layer pair. All CUGR test goldens were regenerated.Verification
./etc/Build.sh).Related Issues
N/A